/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package resource;

import Configuration.Encrypter;
import Configuration.EncryptorException;
import DAO.UsuarioDAOFactory;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import model.Usuario;

/**
 *
 * @author Felipe
 */
@Path("/verificar")
public class VerificaUsuarioResource {

    @GET
    @Path("{login}")
    @Produces(MediaType.APPLICATION_JSON)
    public Usuario fazLogin(@PathParam("login") String loginSenha) {

        String parametros[] = loginSenha.split("&&&&");

        String login = parametros[0];
        String senha = parametros[1];

        /*
         * Este 3º parametro define como será tratada a senha. 0 = O usuário
         * está logando a partir da tela de login e não quer salvar seus dados
         *
         * 1 = O usuário está logando a partir da tela de login, e quer salvar
         * seus dados.
         *
         * 2 = O usuário já tem seus dados registrados no aparelho;
         */
        String flagEncriptacao = parametros[2];

        Usuario usuarioTemp = new Usuario();
        usuarioTemp.setLogin(login);
        if (flagEncriptacao.equals("2")) {
            
            try {
                usuarioTemp.setSenha(Encrypter.decriptar(Encrypter.CHAVE, senha));
            } catch (EncryptorException ex) {
                Logger.getLogger(VerificaUsuarioResource.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            usuarioTemp.setSenha(senha);
        }
        Usuario usuario = UsuarioDAOFactory.getInstance().getDAO().verifyUsuario(usuarioTemp);

        if (flagEncriptacao.equals("1") && usuario != null) {
            try {
                usuario.setSenha(Encrypter.encriptar(Encrypter.CHAVE, senha));
            } catch (EncryptorException ex) {
                Logger.getLogger(VerificaUsuarioResource.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return usuario;
    }
}
